#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) {
    //思路和前面一道差不多，求取元素i的前缀积和后缀积
    int n = nums.size();
    vector<int> f(n);//创建一个前缀积的数组,其中的f[i]为从首元素开始到i-1元素的乘积
    f[0] = 1;//处理边界情况
    vector<int> g(n);//创建一个后缀积的数组//这里的g[i]表示的就是从末尾元素开始到i+1元素的乘积
    g[n - 1] = 1;//处理边界情况
    //从左往右給前缀积求值
    for(int i = 1;i<n;i++)
    {
        f[i] = f[i-1]*nums[i-1];//这里的f[i-1]求得是从1开始到i-2处元素的乘积
    }
    for(int i = n-2;i>=0;i--)
    {
        g[i] = g[i+1]*nums[i+1];//这里的g[i+1]求得是从i+2处到最后的乘积乘上一个nums[i+1]
    }
    vector<int> answer(n);//创建答案返回数组
    for(int i = 0;i<n;i++)
    {
        answer[i] = f[i]*g[i];
    }
    return answer;
    }
};